Spring Security Note-1
认证和授权
对于服务的安全考虑,认证和授权是一个非常重要,并且有难度的点;
它的最终表现形式之一是登录;
解决问题
同时支持多种认证方式(传统,手机短信,微信,QQ等);
同时支持多种前端渠道(浏览器,APP);
支持集群环境,跨应用工作,SESSION控制,控制用户权限,防护与身份认证相关的攻击;
目的
打造可重用的,企业级的,认证和授权模块;
涉及技术
Spring Security,Spring Social,Spring Security OAuth;
目标
理解Spring Security以及相关框架的原理、功能;
基于Spring Security以及相关框架独立开发认证授权相关功能;
掌握抽象和封装的常用技巧,编写可重用的模块;
项目结构
security:主模块(统一执行命令)
security-core:核心业务逻辑(实现基本安全的方式)
security-browser:浏览器安全逻辑
security-app:app安全逻辑
security-demo:样例程序
工程搭建
在创建完所有的过程后;
首先对security的pom进行配置,引入dependencyManagement管理Maven项目的版本(自动管理其他依赖的版本,只需要告诉项目什么依赖即可,不需要指定版本,保证互相兼容);
1 | <dependencyManagement> |
接下来,在core项目中,添加pom依赖,依赖过多,不与展示;
添加:
1 | <!--不需要添加version,由主项目的dependencyManagement控制版本,保证互相兼容--> |
接下来,在app和browser项目中,添加core依赖即可;
1 | <dependencies> |
browser项目与app有略微不同,是一个web项目,所以需要添加spring-session依赖;
1 | <dependency> |
demo项目则引用browser依赖;
1 | <dependencies> |
Hello项目
首先依赖的有关数据库的包,需要先对数据库连接进行配置;
暂时先对spring-session的配置,暂时关闭;
1 | # datasource |
此时访问http://localhost:8081/hello 需要帐号密码才能访问;
这是由于spring-security的默认配置,这里我们先暂时关闭;
如果我们需要将项目打包成可上线的包的形式,则需要在demo的pom文件中,添加一个插件;
用作打包的插件,按照Spring Boot的特有方式,进行打包;
1 | <build> |
此时maven进行 clean package的命令;
在demo文件下的target的目录下,有两个人jar包;
一个叫demo.jar(可执行jar包),一个demo.jar.original(原始文件);